package algorithm_primary.studyMySelf.sort;

import java.util.Arrays;

/**
 * @author 衡孟浩
 * @date 2023/5/16 22:53
 */
public class 冒泡排序 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 1, 3, 2, 1, 1234, 43, 1, 1, 434, 3, 12};
        bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    private static void bubbleSort(int[] arr) {
        if (arr == null || arr.length < 2){
            // 如果为空或者长度小于2   那么说明这个数组不需要排序  因为为null肯定不行   如果小于2那就是1   长度为1也不用排序只有一个
            return;
        }

        // 第一次的for循环是为了  控制我们循环的次数  数组有多少个就循环多少个   每循环一次都会确定下来最大的值
        for (int i = 0; i < arr.length; i++) {
            // 第二次的循环是为了确定当前这个值和上一个值谁大谁小   如果前边的值比当前值大  那么就和当前值换一下位置   也就是说每次都是和前边比较，最后大的值给后走小的值给前来
            //  上边最外层的for第一次循环完毕  那么数组最后一个值肯定就是最大的
            for (int j = 1; j < arr.length - i; j++) {
                if (arr[j] < arr[j - 1]) {
                    int maxValue = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = maxValue;
                }
            }
        }
    }
}
